A computer network such as the Internet can support data communications between client computer systems and installations of one or more server computer systems which are configured as a web site on the computer network. A typical web site includes at least one server computer system that operates (e.g., executes) web server software. This software “serves” web pages or other information to client computer systems that request such information from the web site. A small web site that does not contain much data (i.e., that has a small number of pages to serve) may consist of a single web server computer system coupled to a network. However, large web sites which are often commercial in nature typically include many server computer systems (web servers, application servers, load balancers, etc.) coupled together on a private, internal or local area network which then couples to a larger network such as the Internet via a router, firewall or other gateway computer system.
In web sites that include multiple servers, a web site designer may configure and operate the web site in a variety of different ways. According to one web site configuration called replication, the web site server computer systems each contain, or have access to, a complete replicated copy of the content (e.g., web pages) of the web site. In other words, each server has the ability to serve a copy of all of the web pages for the web site. As such, each web server can serve (i.e., can process) requests for web site content independently of the other web servers.
As a simplified example of a replicated web site, suppose a web site includes two web servers “A” and “B” and web pages “1”, “2” and “3” which are replicated (i.e., duplicated, copied or equally accessible) on each server. A small local area network (LAN) can interconnect servers “A” and “B” to a router which in turn couples the web servers to an external network such as the Internet. The router handles the operations of transferring or routing web page requests from web browsers that operate on client computer systems on the Internet to the web servers “A” and “B” on the LAN, and also handles the transfer or “serving” of web pages from the web servers “A” and “B” to the client computer systems in response to those requests. Both web servers “A” or “B” can equally service requests for web pages “1”, “2” and “3,” since each server has access to these web pages.
Further suppose in this example that web page “1” references web pages “2” and “3” via hyperlinks (e.g., uniform resource locators or URLs), for example, within web page “1.” Such hyperlinks may or may not specify or identify a specific server (e.g., one of servers “A” or “B”) from which to obtain the web page should that link be selected or referenced by a client. For example, when a user of client browser software clicks on a hyperlinked URL to page “2” while viewing page “1”, this URL in page “1” can reference page “2” from either web server “A” or “B”. In this case, the URL hyperlink identifies a specific server (“A” or “B”) from which to obtain web page “2” and forces that server to serve that page when a user clicks on that URL.
Alternatively, since the web pages “1”, “2” and “3” are replicated across each web server within the web site, a URL referencing any of these pages need not identify a specific server (“A” or “B”) from which to obtain the page. In cases where no specific server or page is specified in a request for data from a web site (e.g., a reference to a URL such as http://www.domainname.com/, where domainname is the name of the web site), the router can implement a technique called “load balancing” that allows the router to distribute requests for replicated web site content (a home page in this example) to different servers (e.g., either server “A” or server “B”) within the web site. Since each server can serve all replicated pages for the site, it does not matter which server actually receives and processes the specific request for the replicated page. Load balancing techniques attempt to evenly distribute web page requests across the web servers in a web site to maximize web site performance. Various load balancing or load sharing algorithms are known in the art, some of which are discussed in Request for Comment 2391 (RFC 2391), maintained by the Internet Engineering Task Force, the teaching and contents of which are hereby incorporated by reference in their entirety.
Replicated web sites can consume large amounts of storage space since identical copies of web pages are usually stored in multiple locations for access by different servers. To avoid this problem, web site designers can employ another web site configuration technique called non-replication, in which web site content (e.g., web pages) is not replicated from server to server within the site. There are various reasons for not replicating web site data across each server within a web site. Web site security and conservation of data storage space are two of such reasons.
In non-replicated web site designs, one web server may be responsible for serving certain web site information (e.g., certain web pages related to one part or area of the web site) while other servers associated with the same web site serve other pages of information. For example, one or more servers in a web site may act as a front-end to the web site and serve the home page for the site. When clients reference the home page for the site, a load balancing router may distribute home page requests to any one of the homepage servers which then serves the home page back to the requesting client. Subsequently, when that same client references a URL within the homepage, the URL may specify a specific or secondary server within the web site to handle serving a different page referenced by that URL. As the client further interacts with the web site via this secondary web server, it may be desirable to avoid load balancing further requests for data from that client to that web site. This is because the secondary server may, during the course of the communications session between the client and the secondary web server, develop information that is specific to the client interaction with the web site. In other words, the secondary server may accumulate specific information only relevant to that client and thus load balancing should be avoided so that future client requests that take place during that communications session are directed to the proper secondary server.
As an example, consider an online retail e-commerce web site that sells books. When a client (i.e., a user operating web browser software on a client computer system on the Internet) initially connects to the web site, one of a group of home page servers within the site may provide the initial home page for the site to the client in a load balanced manner. However, once the client begins to interact with the site, for example, to select specific books to purchase, the specific or secondary server handling the selection, tracking and purchase of books on behalf of that client may need to handle all further interaction with the client for that data communications session since this secondary server becomes aware of client specific information such as what books that client is purchasing, credit card validation information, and so forth. Other servers in the web site may not have access to such client-specific information. If a load balancer were to load balance subsequent client requests for pages to another server, the other server may not be aware of client specific information for that client. As such, prior art web site design techniques allow for initial load balancing of general requests to a web site for replicated information (e.g., a homepage or other replicated data) and also allow for mechanisms to disable load balancing at some point during the communications session such that subsequent communications take place with the same server.
Another conventional technology related to the invention is called network address port translation or NAPT. Typically, network address port translation is a function performed within a router or gateway computer system which couples two or more networks together, such as coupling a LAN and the Internet. Quite often, network addresses of computer systems used on one network coupled to the router are incompatible with addresses used in the computer systems of another network coupled to the router. Accordingly, network address port translation functionality within the router allows the router to translate network addresses within packet headers of packets traveling from one network through the router to the other network, into addresses that are compatible on the other network. Network address port translation functionality can translate addresses in both directions. For example, a network address port translation router can translate packet header addresses used on the Internet into addresses that are compatible on the LAN and can also translate packet header addresses used on the LAN into packet header addresses that are useable (i.e., routable) on the Internet.
Consider the former example of the web site LAN coupled via the load balancing router to the Internet. A network administrator (e.g., a person responsible for administering the LAN) configures each web server computer system “A” and “B” with a specific network address such as an Internet Protocol (IP) address. Client and web server computer systems exchange data such as web pages within packets. Such packets contain header information that includes a source network address that identifies the source computer system (e.g., a web server) that originates the data as well as a destination network address that identifies the computer system that is to receive the packets of data. However, the network addresses that the network administrator assigns to the web server computer systems “A” and “B” within the LAN may be private or internal network addresses which are generally only usable on the LAN. Such network addresses of web server computer systems “A” and “B” may not be routable outside of the LAN (i.e., on the Internet). In such cases, the router which couples the LAN to the Internet can perform a network address port translation operation which translates source addresses in packet headers that identify a web server on the LAN to a network address of an interface of the router that is coupled to the Internet along with the port number specifically assigned to the address of the web server on the LAN. In other words, for a packet traveling from the LAN to the Internet, the NAPT router substitutes the packet header source address of the web server that originated the packet with an address of the router on the Internet along with the port number that is assigned to this source address. The router then forwards the packet containing the source address of the router interface and a port number associated with the specific web server onto the Internet for reception by the destination computer system.
If a client computer system of the Internet receives a packet containing an address translated in this manner, the client computer system can return data in other packets to the originator of the packet containing the translated address (i.e., can return data to the specific web server computer system) by referencing the source address information within the packet header. Specifically, this source information, as explained above, contains the address of the router on the Internet along with a specific port number mapped, within the router, to the originating computer system (i.e., the web server) within the LAN. The client computer system then transmits a packet containing destination address information that includes the address of the router on the Internet and the port number assigned to the web server computer system which provided the initial packet to the client. The Internet then routes the packet to the NAPT router specified in the destination address header portion of the packet. When the NAPT router receives the packet, the NAPT router detects the port number specified in the destination address information in the packet header and consults the NAPT table to determine which web server computer system within the LAN is to receive the packet. The NAPT router then forwards the packet on to that specific web server computer system.
In this manner, network address port translation functionality is able to solve the problem of translating packets between networks that use different domains of addresses which may be incompatible with one another. Though the aforementioned example illustrates network address port translation functionality with respect to translating source addresses in packet headers, network address port translation functionality can also translate destination address information within packet headers as well.